import 'package:film/model/film_model.dart';
import 'package:film/service/api_service.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart'; // 使用GetStorage来持久化搜索历史

class FilmSearchController extends GetxController {
  final DioService dioService = DioService();
  // 文本编辑控制器，用于获取搜索框的输入内容
  final TextEditingController searchTextController = TextEditingController();

  // 使用GetStorage来存储搜索历史
  final _box = GetStorage();
  final _historyKey = 'searchHistory'; // 存储键

  // 热门搜索列表 (响应式)
  // 通常这些数据来自API，这里我们用静态数据模拟
  final RxList<String> hotSearches = <String>[].obs;

  // 搜索历史列表 (响应式)
  final RxList<String> searchHistory = <String>[].obs;

  final searchFilmList = <Film>[].obs;
  final isSearching = false.obs;

  @override
  void onInit() {
    super.onInit();
    _loadHotSearches(); // 加载热门搜索数据
    _loadSearchHistory(); // 从本地存储加载搜索历史
  }

  @override
  void onClose() {
    // 页面销毁时，释放TextEditingController资源
    searchTextController.dispose();
    super.onClose();
  }

  // 模拟从API加载热门搜索数据
  void _loadHotSearches() async {
    // 模拟网络延迟
    await Future.delayed(const Duration(milliseconds: 500));
    // 更新热门搜索列表
    hotSearches.assignAll(['视频1', '视频2', '视频3', '动漫推荐', '新番日漫']);
  }

  // 从GetStorage加载搜索历史
  void _loadSearchHistory() {
    final List<dynamic>? history = _box.read<List<dynamic>>(_historyKey);
    if (history != null) {
      // 将加载的数据转换为List<String>并更新到响应式列表
      searchHistory.assignAll(history.map((e) => e.toString()).toList());
    }
  }

  // 执行搜索操作
  void performSearch(String keyword) async {
    // 去除关键词两端的空格
    final cleanKeyword = keyword.trim();
    if (cleanKeyword.isEmpty) {
      Get.snackbar('提示', '请输入搜索关键词');
      return;
    }
    searchTextController.text = cleanKeyword;
    isSearching.value = true;
    // 将关键词添加到搜索历史
    _addSearchHistory(cleanKeyword);
    SearchCriteria criteria = SearchCriteria(page: "1", limit: "3", resultType: "1", vodName: cleanKeyword);
    ApiResponse<List<Film>> response = await dioService.searchVideo(criteria);
    if (response.success) {
      searchFilmList.assignAll(response.data ?? []);
    }
  }

  void cancelSearch() {
    // *** 核心修改 2: 退出搜索模式 ***
    isSearching.value = false;
    searchTextController.clear(); // 清空输入框
    searchFilmList.clear(); // 清空搜索结果列表
  }

  // 添加到搜索历史
  void _addSearchHistory(String keyword) {
    // 如果历史记录已存在该关键词，先移除旧的
    if (searchHistory.contains(keyword)) {
      searchHistory.remove(keyword);
    }
    // 将新的关键词添加到列表的最前面
    searchHistory.insert(0, keyword);

    // 限制历史记录的数量，比如最多10条
    if (searchHistory.length > 10) {
      searchHistory.removeLast();
    }
    // 将更新后的历史记录保存到本地
    _box.write(_historyKey, searchHistory.toList());
  }

  // 清空搜索历史
  void clearSearchHistory() {
    // 弹窗确认
    Get.defaultDialog(
      title: '确认',
      middleText: '确定要清空所有搜索历史吗？',
      textConfirm: '清空',
      textCancel: '取消',
      onConfirm: () {
        searchHistory.clear(); // 清空响应式列表
        _box.remove(_historyKey); // 从本地存储中移除
        Get.back(); // 关闭对话框
      },
    );
  }
}
